<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script src="jquery.js" charset="utf-8"></script>
    <script>

        //1. es6中promise使用。可把异步操作改成同步执行
        // var p=new Promise(function(resolve,reject){
        // 	resolve('成功了')
        // })

        // p.then(res=>{
        // 	console.log(14,res);
        // }).catch(err=>{
        // 	console.log(err);
        // }) 


        //2.1 es7中新增 async 函数，async 是“异步”的简写， async 用于申明一个异步的 function 。
        // await 可以认为是 async wait 的简写，await 用于等待一个异步方法执行完成。它返回一个 Promise 对象。
        // 它更简介，也可把异步执行弄成同步执行 。!!!!注意，只能在函数外使用。async内部相当于封装了promise对象

        // async function show(){
        // 	return "Hello world!";
        // }

        // console.log('async返回的是promise对象',show()); //Promise对象 {} 
        // show().then(re=>{
        // 	 console.log(27,re);
        // }).catch(err=>{
        // 	 console.log(err);
        // }) 




        // //3.1 用async,await实现promise功能 
        function getAjax(url2){
         		return new Promise(function(resolve,reject){
         		$.ajax({
         			url:url2, //接口地址
         			success:function(res){
         				resolve(res) //成功回调
         			},
         			error:function(err){
        		 		reject(err) //失败回调
        		 	}
         		 }) 
         	})	
        }

        async function getAsync(){
            var a1= await getAjax('data/1.json')  //外面传入不同的接口路径
        	var a2= await getAjax('data/2.json')
            var a3= await getAjax('data/3.json')
        	console.log(111,a1,a2,a3)	
        }
        getAsync() 

        //5.async，await的错误处理-如果请求发生异常，怎么处理？把await 放到 try 中进行执行，如有异常，就使用catch 进行处理

        //解决问题  js原生 try{放网络请求可能出错} catch{捕获错误}
        // async function getAsync1() {
        //     try {
        //         let res1 = await getAjax('data/11.json')
        //         let res2 = await getAjax('data/2.json')
        //         console.log(res1, res2)
        //     } catch (error) {
        //         console.log('捕捉错误异常，不影响后续代码执行', error);
        //     }
        //     //后边有代码也不会影响执行
        //     console.log(163, '代码也不会影响执行');
        // }
        // getAsync1()

        /*
        总结：async/await的优缺点
        它是把异步请求变成同步执行的.async放在最近函数外调用,返回的是promise对象.
        1.方便级联调用：即调用依次发生的场景；
        2.同步代码编写方式： Promise使用then函数进行链式调用，一直点点点，是一种从左向右的横向写法；async/await从上到下，
        顺序执行，就像写同步代码一样，更符合代码编写习惯；
        缺点：
        没有catch错误处理，需要用js原生的try,catch进行错误处理 */

    </script>
</head>

<body>

</body>

</html>